package pt.iscte.pcd.santaclaus;
import java.util.Random;


public class Elfo extends Thread {

	private static final int TEMPO_MEDIO_ENTRE_PROBLEMAS = 100;
	private static final long TEMPO_AJUDA = 10;
	private int id;
	private Porta porta;
	private Cama cama;
	private Semaphore visita;
	
	public Elfo(int id, Porta porta, Cama cama, Semaphore visita) {
		this.id = id;
		this.porta = porta;
		this.cama = cama;
		this.visita = visita;
	}
	
	
	public void run() {
		
		Random gerador = new Random();
		while (true) {
			//construir brinquedos
			try {
				sleep(gerador.nextInt(TEMPO_MEDIO_ENTRE_PROBLEMAS));
				System.out.println("Elfo " + id + " prepara-se para visitar Pai Natal");
				visita.semWait();
				System.out.println("Elfo " + id + " pode visitar Pai Natal");
				porta.visitar(cama);
				getHelp();
				
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
		
		
	}


	private void getHelp() throws InterruptedException {
		System.out.println("Elfo a ser ajudado");
		sleep(TEMPO_AJUDA);
		
	}
	

}
